import Vue from 'vue'
import Vuex from 'vuex'
/*
vuex:项目大中型项目、有复杂传参，项目的状态需要 统一管理

购物车、左侧菜单的开合状态、登录后的用户信息、用户的权限、数据对比、。。。

vuex流程：
在组件中使用dispatch 发送动作到 actions，在acitons中commit 提交到 mutations，在mutations 中 修改 store中的state的值，修改后会自动触发  render 重新渲染页面。

action操作不是必要的，异步或大数据量处理时需要使用 action，不能在 actions 中直接修改状态值，只能commit
到mutations

vuex的5个常用属性： 
actions 异步或大数据量处理
mutations   修改状态值  
getters(state的派生属性)     因为在多个组件的computed中都做了相同的操作，所以抽取出来放到 vuex中统一管理
state  状态值
modules  模块化  作用：可以生成多个子树

vuex 4个辅助函数：
mapState   mapGetters   在 computed 这里调用
mapMutations  mapActions  在 methods  这里调用

vuex 和缓存的区别：vuex 是双向绑定的，缓存 没有
vuex刷新时重置了到初始状态，缓存 localStorage 刷新不会影响，必须手动删除

vuex的持久化 ，插件： vuex-persistedstate  ，原理：


*/
Vue.use(Vuex)
    //引入 左侧菜单状态的子树
import app from './modules/app';
import user from './modules/user';
//引入getters
import getters from './getters';

export default new Vuex.Store({
    getters,
    modules: {
        app,
        user
    }
})